package 微服务.微服务技术简介;

/**
 * 微服务简介
 */
public class index {
    /**
     * 微服务是一种经过良好架构设计的分布式架构方案<p></p><p></p>
     * <p>
     * 微服务的特点：<p>
     * 单一职责：微服务拆分粒度更小，每一个服务都对应唯一的业务能力，做到单一职责，避免重复业务开发<p>
     * 面向服务：微服务对外暴露业务接口<p>
     * 自治：团队独立、技术独立（按需使用技术）、数据独立（独立数据库）、部署独立（服务各自部署）<p>
     * 隔离性强：服务调用做好隔离、容错、降级，避免出现级联问题<p>
     * 这些特点，就是为了实现“高内聚、低耦合”<p></p><p></p>
     * <p>
     * 微服务这种方案还需要技术框架来落地实现。在国内最知名的就是SpringCloud和阿里巴巴的Dubbo<p>
     * 尽管技术框架不同，但他们需要做的事情都是一样的<p>
     * 首先，它们都需要去作拆分，形成服务集群<p>
     * 而集群中的每一个服务，都要遵循单一职责原则，并且要面向服务，对外提供接口以便于服务之间能相互调用<p>
     * 以及package "微服务技术栈介绍" 中的各种微服务组件<p></p><p></p>
     * <p>
     * 微服务技术对比（见图：微服务技术对比.img）：<p>
     * Dubbo其实严格意义上来说并不是一个微服务技术，它的核心其实就是<a href="">服务的远程调用</a><p>
     * 所以Dubbo的技术体系并不完整<p>
     * Dubbo的注册中心是依赖于zookeeper、Redis这样一些其他的框架来实现的，而由于这些框架都不是专业做微服务的，所以Dubbo的注册中心并不具备完整的注册中心功能<p></p>
     *
     * SpringCloud整合了全球的很多微服务技术，而后形成了一套完整的微服务技术体系<p>
     * SpringCloud有完善的注册中心，其中包含Eureka、Consul<p>
     * 对于服务远程调用，SpringCloud并没有开发全新的协议和标准，它用的就是基于http协议的标准（Feign）<p></p>
     *
     * 由于Dubbo与SpringCloud的差距太大，近些年阿里巴巴由开发了一个新的微服务技术：SpringCloudAlibaba<p>
     * SpringCloudAlibaba实现了SpringCloud的标准接口<p>
     * SpringCloudAlibaba兼容Eureka注册中心、兼容Feign远程调用协议、兼容SpringCloudConfig配置中心、兼容SpringCloudGateway、Zuul服务网关<p>
     * 同时SpringCloudAlibaba也有了自己的注册中心Nacos，Nacos同时兼容Dubbo和Feign两种协议，使得一个项目里可以使用两种不同的远程调用协议<p>
     * 所以SpringCloudAlibaba同时兼容了Dubbo、SpringCloud两种架构<p>
     *
     *
     * @param args
     */
    public static void main(String[] args) {

    }
}
